package com.itheima.innerclass;

public class Demo1 {

    public static void main(String[] args) {

        //成员内部类：由外部类的对象持有
        //成员内部类创建对象的格式：外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
        Outer.Inner inner = new Outer().new Inner();   //先有外部类对象才有成员内部类
        inner.show();
        inner.setNum(666);
        System.out.println(inner.getNum());
        //成员内部类访问外部类成员的特点：
        //1. 成员内部类可以直接访问外部类中的静态成员，也可以访问外部类中的实例成员
        //2.成员内部类的实例方法中，可以直接拿到当前寄生的外部类对象，格式为：外部类名.this
        Person.Heart heart = new Person().new Heart();
        heart.beat();


    }
}

class Person {
    private int heartBeat = 100;

    public class Heart {

        private int heartBeat = 120;

        public void beat() {
            int heartBeat = 150;
            System.out.println(heartBeat);
            System.out.println(this.heartBeat);
            System.out.println(Person.this.heartBeat);

        }
    }
}
